// clientsort
package main

import (
	"fmt"
	"sort"
)

//客户端排序
type ClientSort struct {
	clientId string
	podNum   int
}

//输出信息
func (p *ClientSort) String() string {
	return fmt.Sprintf("( %s,%d )", p.clientId, p.podNum)
}

type ClientSortList []*ClientSort

//排序规则：首先按POD的数量排序（由小到大），数量相同时按客户端clientid进行排序

func (list ClientSortList) Len() int {

	return len(list)
}

func (list ClientSortList) Less(i, j int) bool {
	if list[i].podNum < list[j].podNum {
		return true
	} else if list[i].podNum > list[j].podNum {
		return false
	} else {
		return list[i].clientId < list[j].clientId
	}
}
func (list ClientSortList) Swap(i, j int) {
	var temp *ClientSort = list[i]
	list[i] = list[j]
	list[j] = temp
}

//测试
func TestClientSortList() {
	p1 := &ClientSort{"client001", 19}
	p2 := &ClientSort{"client002", 11}
	p3 := &ClientSort{"client007", 19}
	p4 := &ClientSort{"client004", 20}
	p5 := &ClientSort{"client005", 30}
	p6 := &ClientSort{"client006", 23}

	pList := ClientSortList([]*ClientSort{p1, p2, p3, p4, p5, p6})
	sort.Sort(pList)
	fmt.Println(pList)

}
